function [Result] = Ddavid_Weighted_SVM_caller(DataTraining, TrueLabelTraining, C, G, Weight, DataTesting, TrueLabelTesting)

N = size(TrueLabelTraining, 1);
M = size(TrueLabelTraining, 2);
N2 = size(TrueLabelTesting, 1);

Result.Outputs = zeros(N2, M);

for i = 1:M
    Ddavid_call_SVM_training_single_label(DataTraining, TrueLabelTraining(:, i), C, G, Weight(:, i));
    a = Ddavid_call_SVM_testing_single_label(DataTesting, TrueLabelTesting(:, i));
    [Result.Outputs(:, i)] = a;
end

% final Output information
Result.Pre_Labels = (Result.Outputs >= 0.5);
Result.HammingLoss = Hamming_loss(TrueLabelTesting, Result.Pre_Labels);
[Result.Micro, Result.Macro] = Ddavid_get_micro_macro_prf(TrueLabelTesting, Result.Pre_Labels);
